// ==================================================
// 	整理实体类的属性
// 	20180803
//	刘剑
//	563084506@qq.com
// ==================================================

		

module.exports=function (tables) {

	Object.keys(tables)
	.map(tbName=>tables[tbName])
	.forEach(table=>{
		table.fields.forEach(field=>{
			field.properties || (field.properties=[]);
			if(field.BE_REFERENCED){ // 如果本列被引用
				field.BE_REFERENCED.forEach(item =>{
					field.properties.push({
						type : `List<${under2Pascl(item.TABLE_NAME)}>`,
						name : under2Camel(item.TABLE_NAME)+"List",
						comment : props.listComment?eval(("`"+props.listComment+"`").replace(/{/g,'${')):"",
						setComment : props.setComment?eval(("`"+props.setComment+"`").replace(/{/g,'${')):"",
						getComment : props.getComment?eval(("`"+props.getComment+"`").replace(/{/g,'${')):""
					});
				});
			}
			if(field.REFERENCED){ // 如果本列引用了别人
				let item = field.REFERENCED;
				field.properties.push({
					type : under2Pascl(item.TABLE_NAME),
					name : under2Camel(item.TABLE_NAME),
					comment : props.entryComment?eval(("`"+props.entryComment+"`").replace(/{/g,'${')):"",
					setComment : props.setComment?eval(("`"+props.setComment+"`").replace(/{/g,'${')):"",
					getComment : props.getComment?eval(("`"+props.getComment+"`").replace(/{/g,'${')):""
				});
			}
			/*
				以下情况需要生成普通字段
				1. 没有引用关系
				2. 主键
				3. 唯一索引
				!(field.BE_REFERENCED||field.REFERENCED) || field.COLUMN_KEY=='PRI' || field.COLUMN_KEY=='UNI'
			*/
			if(true){ // 暂时生成所有属性
				let item = field;
				field.properties.push({
					type : field.JavaType,
					name : under2Camel(field.COLUMN_NAME),
					comment : props.fieldComment?eval(("`"+props.fieldComment+"`").replace(/{/g,'${')):"",
					setComment : props.setComment?eval(("`"+props.setComment+"`").replace(/{/g,'${')):"",
					getComment : props.getComment?eval(("`"+props.getComment+"`").replace(/{/g,'${')):""
				});
			}
		});
	});
	return tables;
}